package cn.com.api.service;

import java.util.Date;
import java.util.List;

import org.springframework.stereotype.Service;

import cn.com.api.entity.ApiT_enums;
import cn.com.api.entity.ApiTmember;
import cn.com.api.resultpage.MyOrderPage;

@Service
public interface ApiCommonService {
	// 登录注册成功后，更新用户信息
	public void updateApiTmember(ApiTmember member);

	// 用户忘记密码，更新用户信息
	public void updateApiTmemberPass(ApiTmember member);

	// 根据订单的各种状态，给订单设置前台的显示状态
	public void setOrderShowStatus(MyOrderPage orderPage);

	/** 判断订单是否需要给商家推送新订单消息 */
	public boolean checkNewOrder(String payType, Integer dd_status,
			Integer zi_status);

	/**
	 * 产生新的订单时给商家发送消息，订单号发送给商家
	 * 
	 * @param shop_id
	 * @param titles
	 */
	public void sendNewOrdersInfoToShop(Integer shop_id, String titles);

	/**
	 * 提醒商家接单
	 * 
	 * @param shop_id
	 * @param titles
	 */
	public void remindShopToTakeOrder(Integer shop_id, String titles);

	/**
	 * 提醒商家发货
	 * 
	 * @param shop_id
	 * @param titles
	 */
	public void remindShopToSendGoods(Integer shop_id, String titles);

	/**
	 * 货已送达，提醒客户对本次配送服务进行评价
	 * @param shop_id
	 * @param titles
	 */
	public void remindUserEvaluate(String u_id,String titles);

	
	/** 定时任务-自动派单 */
	public void autoAllocateTask();

	/** 自动+手动分派号配送员时，提醒配送员有新的配送任务 */
	public void remindSenderNewTask(String u_id, String titles);

	/** 配送员取货成功，提醒用户订单已在配送中 */
	public void remindUserOrderInSending(String u_id, String titles);

	/** 订单下单1小时后，若未付款，则超时取消订单 */
	public void cancelOverTimeOrders();
	
	/** 设置已完成订单的配送评价-默认4星评价 */
	public void setupCompleteOrderRemark();

	/** 产生新的配送任务时，分派配送员 */
	public void allocateOrderTask(String orderId);

	/** 手动分配 **/
	public void allocateOrderTaskManually(String orderId, String shipper_user_id);

	/**
	 * 存储指出定日期的商家统计和配送员统计
	 * @param nowDate
	 */
	public void shipperKPIcomputing(Date nowDate);
	
	/**
	 * 汇总分站当日订单信息统计
	 * @param nowDate（要统计的某天的日期）
	 */
	public int dayStationStat(Date nowDate);

	//更改派单通知
	public void removeallocateOrder(String u_id, String titles);
	
	//更改派单
	public void changeallocateOrder(int id,String orderId, String shipper_user_id);
	
	/**
	 * 生成配送员某年某月的配送统计记录
	 * @param year
	 * @param month
	 */
	public int countUpMonthShipping(int year,int month);
	
	/**
	 * 生成商家某年某月的配送统计记录
	 * @param year
	 * @param month
	 */
	public int countUpShopMonthShipping(int year,int month);
	
	/**
	 * 生成商家从某日(并且这一天为周五)起近七天的配送统计记录（周）
	 * @param date （'2016-02-22'）
	 * @return
	 */
	public int countUpShopWeekShipping(Date date);
	
	/**
	 * 提醒配送员取衣服
	 * @param orderId
	 */
	public void remindSenderForClothes(String u_id, String orderId, String message, Integer messageType);
	
	/**
	 * enum_dict_get 数据字典中获取数据集
	 * @param key 
	 *        数据字段索引
	 * */
	public List<ApiT_enums> enum_dict_get(String key);
	
}
